home *** CD-ROM | disk | FTP | other *** search
/ PC World Interactive 7 / PC World Interactive 7.iso / program / cprog.EXE / C3.TXT < prev    next >
Text File  |  1996-07-05  |  9KB  |  285 lines

  1. C Dili -  3. Konu
  2.  
  3. 'WHILE' DONGUSU
  4.  
  5. C dilinde, bircok tip dongu vardir. While dongusu, herhangi bir test,
  6. dogru kaldigi surece, bir program parcasini tekrarlar. Bu testin sonucu
  7. yalnis cikarsa, while dongusu sona erer, ve program normal akisina devam
  8. eder. 
  9.  
  10. main()    /* while dongusunun bir ornegi */
  11. {
  12.     int count;
  13.     
  14.     count = 0;
  15.     while (count<6)
  16.     {
  17.         printf("count'un degeri: %d oldu. ",count);
  18.         count = count + 1;
  19.     }
  20. }
  21.  
  22. Bu programda, count isimli bir degiskeni tanimliyoruz, ve sifira
  23. esitliyoruz. while dongusunun kullanimi, gorundugu gibi, 'while' sozcugu,
  24. ve parantez icinde bir test'den olusur.  Parantezlerin icindeki deyim
  25. dogru kaldigi surece, bu program tekrarlar. Bu programda, degiskenin
  26. degeri teker teker arttirildigindan, eninde sonunda degeri altiya
  27. varacaktir, ve bu durumda program donguden cikacaktir. 
  28.  
  29. Parantezlerin icinde yer alan deyimleri, bundan sonraki konuda
  30. isleyecegiz. O zamana kadar, bunlarin dusundugunuz seyleri yaptigini kabul
  31. ediniz. 
  32.  
  33. Birkac onemli nokta: 
  34.  
  35.   1. Sayet 'count' un baslangic degeri 5 den buyuk birseye atanmis olsa
  36.   idi, dongunun icindekiler hic yapilmayacakti.  
  37.   2. Eger 'count = count + 1' komutu ile degerini bir arttirmasa idik, bu
  38.   program hic durmazdi.  
  39.   3. Son olarak, eger dongude tek bir komut varsa, kume isaretlerine gerek
  40.   yoktur.
  41.  
  42.  
  43. DO-WHILE DONGUSU
  44.  
  45. Buna benzeyen bir baska komut ise, 'do-while' komutudur. Su program, daha
  46. once gordugumuz programa cok benzer:
  47.  
  48. main()    /* Do-While dongusu ornegi */
  49. {
  50.     int i;
  51.     
  52.     i=0;
  53.     do
  54.     {
  55.         printf("I nin degeri simdi: %d oldu.\n",i);
  56.         i = i + 1;
  57.     } while (i<5);
  58. }
  59.  
  60. Yegane farkin, dongunun bir 'do' komutu ile yapilmasi ve denkligin
  61. kontrolunun sona birakilmasidir. Bu durumda, parantezlerin arasinda deyim
  62. dogru kaldigi surece, dongu tekrarlanir. 
  63.  
  64. Burada onemli noktalar: Kontrol, dongunun sonunda yapildigindan, kume
  65. isaretlerinin arasindaki deyimler daima en az bir kere islenir. Ayrica
  66. yine, sayet i nin degeri degismez ise, program donguden cikmaz. Son
  67. olarak, sayet dongunun icinde bir tek komut varsa, kume isaretlerine gerek
  68. yoktur. 
  69.  
  70. Ayrica, dilediginiz miktarda donguyu ic ice de koymaniz mumkundur.
  71.  
  72. FOR DONGUSU
  73.  
  74. For dongusu, yeni birsey degildir. Sadece, 'while' dongusunun bir baska
  75. seklidir:
  76.  
  77. main()    /* Bir for dongusu */
  78. {
  79.     int index;
  80.     
  81.     for(index=0;index<6;index = index + 1)
  82.         printf("index'in degeri simdi %d oldu.\n",index);
  83. }
  84.  
  85. 'For' dongusu, uc parcadan olusmustur. Her kesim birbirinden ; ile
  86. ayrilir. Ilk kesimi, baslangic kesimi (initalization) dir. Burada bulunan
  87. islemler, dongu baslamadan once, ve bir kere yapilir. Aslinda buraya
  88. yazilacak seyler icin bir sinir yoktur, fakat basit tutmakta fayda vardir.
  89. Bu kesime birden fazla islem yazilabilir, bunlari da birbirinden ','
  90. virgul ile ayirmak gerekir. 
  91.  
  92. Ikinci kesimde, "index<6" diyen parcada, bu dongunun her turunda kontrol
  93. edilmesi gereken deyim yer alir. Bu deyim dogru oldugu surece, dongu devam
  94. eder. Dogru yada yalnis sonuc veren herhangi bir deyim, bu kesimde yer
  95. alabilir. 
  96.  
  97. Ucuncu kesimde yer alan islemler ise, yine dongunun her turunda yapilir,
  98. fakat isleme baslamasi, dongunun icinde yer alan komutlarin islenmesinden
  99. sonra yapilir. 
  100.  
  101. 'For' komutundan sonra, ya tek bir komut gelir, yada kume isaretleri
  102. icinde, bir komut bloku.. C de hemen heryerde, tek bir komut yerine, bir
  103. komut bloku koymaniz mumkundur. 
  104.  
  105.  
  106. IF KOMUTU
  107.  
  108. /* Bu, if-else komutunun bir ornegidir */
  109.  
  110. main()
  111. {
  112.     int data;
  113.     
  114.     for (data=0;data<10;data = data + 1)
  115.     {
  116.         if (data==2)
  117.             printf("Data simdi %d ye esit.\n",data);
  118.         
  119.         if (data<5)
  120.             printf("Data simdi %d. Bu da, 5 den azdir. \n",data);
  121.         else
  122.             printf("Data simdi %d. Bu da, 4 den buyuktur.\n",data);
  123.     }
  124. }
  125.  
  126. Bu programda, ilk once, icinde iki tane if komutu olan bir for dongusu
  127. gorunuyor. Bu dongunun on kere tekrarlanacagi, acik bir sekilde goruluyor.
  128.  
  129. Ilk if satirina bakin: "if" kelimesi ile basliyor, ve sonra bir parantez
  130. icinde, sarti goruluyor. Sayet bu parantezin icindeki islemin sonucu dogru
  131. (evet) ise, if'den hemen sonra gelen satir islenir. Sayet cevap yalnis
  132. ise, if'den sonra gelen komut, atlanir. Burada da, tek bir komut, kume
  133. isaretleri ile, bir komut bloku haline getirilebilir.
  134.  
  135. Burada data==2 islemi, data degiskeninin degerinin ikiye esit olup
  136. olmadigini kontrol eder. (Sayet data = 2 olsa idi, tumuyle ayri birsey
  137. gerceklesirdi.) 
  138.  
  139. IF-ELSE
  140.  
  141. Ikinci "if", yine birincisine benziyor. Fakat, ek olarak "else" isimli bir
  142. kesimi de iceriyor. Bu da, sayet parantezlerin icindeki islem dogru (EVET)
  143. sonuc verirse, "if" den sonra gelen satir islenecektir, sayet yalnis
  144. (HAYIR) sonucu verirse, "else" den sonra gelen komut islenecektir. Bu
  145. nedenle, iki satirdan biri muhakkak islenecektir. 
  146.  
  147. BREAK ve CONTINUE 
  148.  
  149. main()
  150. {
  151.     int xx;
  152.     
  153.     for (xx=5;xx<15; xx=xx+1)
  154.     {
  155.         if (xx==8)
  156.             break;
  157.         printf("Break dongusunun icinde, xx in degeri simdi %d\n",xx);
  158.     }
  159.     
  160.     for (xx=5;xx<15;xx=xx+1)
  161.     {
  162.         if (xx==8)
  163.             continue;
  164.         printf("Continue dongusunun icinde, xx in degeri simdi %d\n",xx);
  165.     }
  166. }
  167.  
  168.  
  169. Bu programda gordugunuz gibi, sayet xx in degeri 8 e esit ise, break
  170. isimli komutu cagiran bir if komutu goruyorsunuz. Break komutu, bizi
  171. donguden cikarip, programi dongunun hemen altindaki satirdan devam
  172. etmesini saglar. 
  173.  
  174. Bu komut, ornegin dongunun icinde hesaplanan bir degere gore, donguden
  175. cikmak istediginizde cok ise yarar. Ornekte, xx in degeri sekize ulasinca,
  176. program donguden cikar, ve ekrana yazilmis en son deger, yedi olur.
  177.  
  178. Programin ikinci parcasindaki dongude ise, Continue komutunu goruyoruz.
  179. Burada ise, deger 8 e ulasinca, program donguden cikmaz, fakat program
  180. dongunun en son satirina atlayip, aradaki printf satirini islemez.
  181.  
  182.  SWITCH
  183.  
  184. main()
  185. {
  186.     int kamyon;
  187.     
  188.     for (kamyon = 3;kamyon<13;kamyon = kamyon + 1)
  189.     {
  190.         switch (kamyon)
  191.         {
  192.             case 3:    printf("Degeri simdi uc.\n");
  193.                     break;
  194.             case 4: printf("Degeri simdi dort.\n");
  195.                     break;
  196.             case 5:
  197.             case 6:
  198.             case 7:
  199.             case 8:    printf("Degeri simdi 5 le 8 arasinda.\n");
  200.                     break;
  201.             case 11:printf("Degeri simdi onbir.\n");
  202.                     break;
  203.             default:printf("Tanimsiz degerlerden biri.\n");
  204.                     break;
  205.         }
  206.     }
  207. }
  208.  
  209. Simdiye kadar gordugumuz en buyuk komut olan "switch", aslinda kullanimi
  210. kolaydir. Ilk once, "switch" kelimesi ile baslar. Bunun arkasindan,
  211. parantez icinde bir deyim gelir. Bundan sonra, dilediginiz kadar 'case'
  212. komutlari, kume isaretleri arasinda yer alir. Her degeri sembolize eden
  213. 'case' satirlari, degiskenin degeri, iki nokta ust uste, ve bununla ilgili
  214. komutlardan olusur. 
  215.  
  216. Bizim ornegimizde, "kamyon" degiskeninin degeri 3 oldugunda, printf
  217. satiri, 'Degeri simdi uc' satirinin ekrana yazilmasini, saglar. Daha sonra
  218. yer alan 'break' komutu ise, switch in icinde yer alan diger komutlari
  219. islenmeden, switch den cikilmasini saglar. 
  220.  
  221. Bir giris noktasi bulunduktan sonra, satirlar bir 'break' komutuna
  222. rastlayincaya kadar, yada switch'in son kume isaretine varincaya
  223. kadar komutlar siradan islenir. 
  224.  
  225. "Kamyon" un degeri 5 e esit ise, program, case 5,6,7 den gecerek 8'de
  226. bulunan printf ve break komutlarini isler. Break komutu da, programi son
  227. kume isaretine getirir.  Sayet degiskenin bir degerine karsilik gelen bir
  228. case yoksa, 'default:' isimli secenek secilir. 
  229.  
  230. GOTO KOMUTU
  231.  
  232. main()
  233. {
  234.     goto leave
  235.     printf("Bu satir hic yazilmayacak.\n");
  236. leave:
  237. }
  238.  
  239.  
  240. Goto komutunu kullanmak icin, "goto" isminin yanina, atlamak istediginiz
  241. yerin sembolik ismini yazmaniz yeterlidir. "goto" ile bir dongunun icine
  242. atlamaniza izin yoktur, fakat bir dongunun disina atlayabilirsiniz. Ayrica
  243. bir fonksiyondan otekine de "goto" ile gecemezsiniz. 
  244.  
  245. Bazi kimseler, goto nun hicbir yerde kullanilmamasi gerektigini
  246. belirtiyorlar. Sayet, goto kullanimi ile, diger metodlara gore daha anlasilir
  247. bir program olusacaksa, goto yu kullanmaktan cekinmeyin.
  248.  
  249. SONUNDA - ISE YARAYAN BIR PROGRAM
  250.  
  251. main()    /* Santigrad'dan Fahrenheite */
  252. {
  253.     int count;    /* for degiskeni */
  254.     int fahr;    /* fahrenheit degerini tutar */
  255.     int cen;    /* Santigrat degerini tutar */
  256.     
  257.     printf("Santigrad -> Fahrenheit karsilik tablosu\n\n");
  258.     
  259.     for (count=-2;count<=12;count=count+1)
  260.     {
  261.         cen = 10 * count;
  262.         fahr = 32 + (cen * 9) / 5;
  263.         printf(" C = %4d  F = %4d  ",cen,fahr);
  264.         if (cen == 0)
  265.             printf(" Suyun donma noktasi");
  266.         if (cen == 100)
  267.             printf(" Suyun kaynama noktasi");
  268.         printf("\n");
  269.     }
  270. }
  271.  
  272. Bu program, santigrad ve fahrenheit derecelerin tablosunu yaratmaktadir.
  273. Birden fazla degisken kullanilan ilk programimizdir bu.  Degisken
  274. taniminda, uc ayri satir kullanilmasi sayesinde, degiskenlerin yanina ne
  275. ise yaradiklarini da yazabiliriz.
  276.  
  277. Odev:
  278.  
  279. 1.    Isminizi ekrana 10 kere yazan bir program yaziniz. Bu programi 3 kere
  280.     yaziniz. Her seferinde ayri bir dongu metodu kullanarak..
  281. 2.    Birden ona kadar sayan ve bu degerleri her satira bir tane olmak uzere
  282.     ekranda gosteren bir program yazin. Bu deger 3 e ve 7 ye esit olunca,
  283.     dilediginiz bir mesaji yazsin.
  284.  
  285.